Soru & Cevap

__weak kullanim amaci

11.02.2014 - 01:02

Merhaba aşağidaki kodda _weak ve weakself alanlarinin kullanim mantiğini tam olarak anlayamadim.

Yardimci olabilir misiniz?

[code]

ACAccountType *twitterAccountType = [self.accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter];

    

    __weak MasterViewController *weakSelf = self;

    

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

        [weakSelf.accountStore requestAccessToAccountsWithType:twitterAccountType options:nil completion:^(BOOL granted, NSError *error) {

            if (granted)

            {

                NSArray *twitterAccounts = [weakSelf.accountStore accountsWithAccountType:twitterAccountType];

                

                if (twitterAccounts && [twitterAccounts count] > 0)

                {

                    weakSelf.twitterAccount = twitterAccounts[0];

                    

                    dispatch_async(dispatch_get_main_queue(), ^{

                        [weakSelf refreshPearsonFeed];

                    });

                }

            }

            else

            {

                dispatch_async(dispatch_get_main_queue(), ^{

                    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error"

                                                                        message:[error localizedDescription]

                                                                       delegate:nil

                                                              cancelButtonTitle:@"OK"

                                                              otherButtonTitles:nil];

                    [alertView show];

                });

            }

        }];

    });

[/code]

 

 

47 Görüntülenme

2 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

Profile picture for user abdulbasit.tanhan
abdulbasit.tanhan
13.02.2014 - 03:40

Singleton patterni bir sınıfı bir kereleliğine oluşturmak için kullanılır. Böyle sınıfı her çağırdığnızda eğer oluşmussa bir daha oluşturmaz ve hazır olan üzerinden devam etmenizi sağlar. Böylece bu objeyi sınıflar arasında kullanabilirsiniz. 

Profile picture for user abdulbasit.tanhan
abdulbasit.tanhan
13.02.2014 - 03:33

Bloklar içerisinde kullanılan objelerde local olmayan bir obje kullandığınızda ve bu strong bir pointerı array içerisine veya kendisini strong bir şekilde tutacak bir objeye atarsanız memory cycle oluşur. Bu da iyi bir şey değil. Bloklar içerisinde bunun oluşmaması için strong pointerınıza __weak diyerek bunu local bir objeye çevirirsiniz. Böylece bloktaki iş bitince release olur.